package com.tsy.server.component.redis;

/**
 * Redis缓存key前缀常量类
 * <p>
 * 用于统一管理Redis缓存key的前缀，避免硬编码和重复定义
 */
public class RedisKeyConstant {

    /**
     * 邮箱验证码前缀
     * 完整格式：verify:code:{email}
     */
    public static final String VERIFY_CODE_PREFIX = "verify:code:";

    /**
     * 用户Token前缀
     * 完整格式：token:{username}
     * 用于存储用户名与Token的映射关系，实现单点登录控制
     */
    public static final String USER_TOKEN_PREFIX = "token:";

    /**
     * 登录Token前缀
     * 完整格式：login:{token}
     * 用于存储Token与用户名的映射关系，实现Token有效性验证
     */
    public static final String LOGIN_TOKEN_PREFIX = "login:";

    /**
     * 重置密码Token前缀
     * 完整格式：reset:pwd:token:{token}
     * 用于存储Token与用户名的映射关系，实现Token有效性验证
     */
    public static final String RESET_PWD_TOKEN_PREFIX = "reset:pwd:token:";

    /**
     * 构建邮箱验证码的key
     *
     * @param email 邮箱地址
     * @return 完整的Redis key
     */
    public static String buildVerifyCodeKey(String email) {
        return VERIFY_CODE_PREFIX + email;
    }

    /**
     * 构建用户Token的key
     *
     * @param username 用户名
     * @return 完整的Redis key
     */
    public static String buildUserTokenKey(String username) {
        return USER_TOKEN_PREFIX + username;
    }

    /**
     * 构建登录Token的key
     *
     * @param token JWT令牌
     * @return 完整的Redis key
     */
    public static String buildLoginTokenKey(String token) {
        return LOGIN_TOKEN_PREFIX + token;
    }

    public static String buildRestPwdTokenKey(String restPwdToken) {
        return RESET_PWD_TOKEN_PREFIX + restPwdToken;
    }
}